package educar.gui;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;


import javax.swing.JPanel;
import javax.swing.JTextField;


import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

import educar.controllers.MateriaController;
import educar.controllers.TransaccionAlumnoController;

public class AlumnoView extends javax.swing.JFrame implements IView {
	private JPanel PanelInscripcion;
	private JComboBox JComboBoxActividades;
	private JButton BotonVerActividades;
	private JTextField RutaArchivo;
	private JButton jButton1;
	private JComboBox ComboBoxMaterias;
	private JPanel PanelSolucion;
	private JButton ConfirmarInscripcion;
	private JButton Logout;
	private JComboBox ComboBoxMateriasNoInscripto;
	private JButton CargarSolucion;
	private JButton Inscripcion;
	private JComboBox ComboBoxMateriasInscripto;

	private JPanel PanelBotones;
	private OyenteBotones oyenteBotones;

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				AlumnoView inst = new AlumnoView();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public AlumnoView() {
		super();
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			setTitle("Alumno");
			oyenteBotones=new OyenteBotones();
			{
				getContentPane().setLayout(null);
				setResizable(false);
			}
			{
				PanelBotones = new JPanel();
				PanelBotones.setLayout(null);
				getContentPane().add(PanelBotones);
				PanelBotones.setBounds(0, 0, 202, 295); 
				PanelBotones.setBackground(new Color(0,0,0));
				{
					Inscripcion = new JButton();
					PanelBotones.add(Inscripcion);
					Inscripcion.setText("Inscripcion");
					Inscripcion.setBounds(12, 140, 179, 32);
					Inscripcion.addActionListener(oyenteBotones);

				}
				{
					CargarSolucion = new JButton();
					PanelBotones.add(CargarSolucion);
					CargarSolucion.setText("Cargar una Solucion");
					CargarSolucion.setBounds(12, 41, 179, 34);
					CargarSolucion.addActionListener(oyenteBotones);
				}
				{
					Logout = new JButton();
					PanelBotones.add(Logout);
					Logout.setText("Salir");
					Logout.setBounds(51, 200, 102, 33);
					Logout.addActionListener(oyenteBotones);
				}
			}
			{
				PanelInscripcion = new JPanel();
				PanelInscripcion.setLayout(null);
				PanelInscripcion.setVisible(false);
				getContentPane().add(PanelInscripcion);
				PanelInscripcion.setBounds(202, 0, 281, 295);
				PanelInscripcion.setBackground(new Color(50,200,88));
				TransaccionAlumnoController controladorTransaccion = new TransaccionAlumnoController(this);
				{
					ConfirmarInscripcion = new JButton();
					PanelInscripcion.add(ConfirmarInscripcion);
					ConfirmarInscripcion.setText("Inscribirme");
					ConfirmarInscripcion.setBounds(78, 241, 121, 32);
					ConfirmarInscripcion.addActionListener(controladorTransaccion);
				}
				{
					ComboBoxModel ComboBoxMateriasNoInscriptoModel = 
						new DefaultComboBoxModel(MateriaController.listarMaterias());
					ComboBoxMateriasNoInscripto = new JComboBox();
					PanelInscripcion.add(ComboBoxMateriasNoInscripto);
					ComboBoxMateriasNoInscripto.setModel(ComboBoxMateriasNoInscriptoModel);
					ComboBoxMateriasNoInscripto.setBounds(12, 85, 234, 22);
					
					ComboBoxMateriasNoInscripto.addActionListener(controladorTransaccion);
					
				}
	
				
			}
			{
				PanelSolucion = new JPanel();
				PanelSolucion.setLayout(null);
				PanelSolucion.setVisible(false);
				PanelSolucion.setBackground(new Color(50,200,88));
				getContentPane().add(PanelSolucion);
				PanelSolucion.setBounds(202, 0, 280, 295);
				TransaccionAlumnoController controladorTransaccion = new TransaccionAlumnoController(this);
				{
					ComboBoxModel ComboBoxMateriasModel = 
						new DefaultComboBoxModel(MateriaController.listarNombres());
					ComboBoxMaterias = new JComboBox();
					PanelSolucion.add(ComboBoxMaterias);
					ComboBoxMaterias.setModel(ComboBoxMateriasModel);
					ComboBoxMaterias.setBounds(29, 12, 216, 22);
					ComboBoxMaterias.addActionListener(controladorTransaccion);
				}
				{
					RutaArchivo = new JTextField();
					PanelSolucion.add(RutaArchivo);
					RutaArchivo.setText("Seleccione la ruta del archivo a cargar");
					RutaArchivo.setBounds(12, 205, 249, 25);
				}
				{
					jButton1 = new JButton();
					PanelSolucion.add(jButton1);
					jButton1.setText("Cargar Solucion");
					jButton1.setBounds(71, 247, 160, 30);
					jButton1.addActionListener(controladorTransaccion);
				}
				{
					BotonVerActividades = new JButton();
					PanelSolucion.add(BotonVerActividades);
					PanelSolucion.add(getJComboBoxActividades());
					BotonVerActividades.setText("Ver actividades");
					BotonVerActividades.setBounds(29, 43, 216, 22);
					BotonVerActividades.addActionListener(controladorTransaccion);
				}
			}
			pack();
			this.setSize(471, 325);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}

	@Override
	public void present(String model) {
		// TODO Auto-generated method stub
		
	}
	
	private void destruirVentana(){
		this.dispose();
	}
	
	private class OyenteBotones implements ActionListener {

		public void actionPerformed(ActionEvent evento) {
			if(evento.getActionCommand().equals("Cargar una Solucion"))
			{
				PanelInscripcion.setVisible(false);
				PanelSolucion.setVisible(true);
			}
			if(evento.getActionCommand().equals("Inscripcion"))
			{
				PanelSolucion.setVisible(false);
				PanelInscripcion.setVisible(true);
			}
			if(evento.getActionCommand().equals("Salir"))
			{
				destruirVentana();
			}
		}
	}
		
		public String getCodigoMateriaEnCargarSolucion(){
			String a=(String)ComboBoxMaterias.getSelectedItem();
			String respuesta = "";
			if(a!="**MATERIAS**")
			{
				int i=1;
				while (a.charAt(i)!=')')
				{
					respuesta=respuesta+a.charAt(i);
					i++;
				}
			}
			System.out.println("getCodigoMateriaEnCargarSolucion "+respuesta);
			return respuesta;
		}
		
		public String getCodigoMateriaEnInscripcion(){
			String materia=(String)ComboBoxMateriasNoInscripto.getSelectedItem();
			String respuesta = "";
			if(materia!="**MATERIAS**")
			{
				int i=1;
				while (materia.charAt(i)!=')')
				{
					respuesta=respuesta+materia.charAt(i);
					i++;
				}
			}
				System.out.println("getCodigoMateriaEnInscripcion "+ respuesta);
				return respuesta;
		}
		
		public String getCodigoActividadEnCargarSolucion(){
			String a=(String)JComboBoxActividades.getSelectedItem();
			String respuesta = "";
			if(a!="**ACTIVIDADES**")
			{
				int i=1;
				while (a.charAt(i)!=')')
				{
					respuesta=respuesta+a.charAt(i);
					i++;
				}
			}
			return respuesta;
		}
		
		
		public void actualizarActividades(String [] actividades){
		    try {
		    JComboBoxActividades.removeAllItems();
			for(int i = 0; i < actividades.length; i++){
				JComboBoxActividades.addItem(actividades[i]);
			}
			
		    } catch(Exception e) {}
			/**try{
				ComboBoxModel ComboBoxMateriasModel = new DefaultComboBoxModel(MateriaController.listarNombres());
				ComboBoxMaterias.setModel(ComboBoxMateriasModel);
			} catch(Exception e) {}*/
		}
		
		
		public void actualizarMateriasInscripto(){
		    /**try {
		    	ComboBoxMaterias.removeAllItems();
		    	for(int i = 0; i < materias.length; i++){
		    		ComboBoxMaterias.addItem(materias[i]);
		    	}
		    } catch(Exception e) {}*/
			try{
				ComboBoxModel ComboBoxMateriasModel = new DefaultComboBoxModel(MateriaController.listarNombres());
				ComboBoxMaterias.setModel(ComboBoxMateriasModel);
			} catch(Exception e) {}
		}
		
		private JComboBox getJComboBoxActividades() {
			if(JComboBoxActividades == null) {
				ComboBoxModel JComboBoxActividadesModel = 
					new DefaultComboBoxModel(
							new String[] {"**ACTIVIDADES**"});
				JComboBoxActividades = new JComboBox();
				JComboBoxActividades.setModel(JComboBoxActividadesModel);
				JComboBoxActividades.setBounds(29, 116, 216, 22);
			}
			return JComboBoxActividades;
		}
		
}